package czy.demo.controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.security.DenyAll;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;

/**
 * 如果类、方法上同时存在RolesAllowed，则方法上注解覆盖类上注解
 * 即类注解不起作用
 * 目前JSR250的注解只有三个作用：
 * 拒绝所有、允许所有、指定角色之一
 * 没有匿名、认证等方式
 */
@RestController
@RolesAllowed("HEHE")
@RequestMapping("/jsr")
public class JSR250Controller {

    /**
     * JSR250注解，只有具有指定角色的客户可以访问
     * 意为列表具有列表角色之一的客户可以访问
     */
    @GetMapping("/user")
    @RolesAllowed("USER")
    public String user(){
        return "JSR250注解的方法，只有USER角色可以访问";
    }

    @GetMapping("/admin")
    @RolesAllowed("ADMIN")
    public String admin(){
        return "JSR250注解的方法，只有ADMIN角色可以访问";
    }

    @DenyAll
    @GetMapping("/deny/all")
    public String denyAll(){
        return "JSR250注解的方法，拒绝任何用户的访问";
    }

    @PermitAll
    @GetMapping("/permit/all")
    public String permitAll(){
        return "JSR250注解的方法，允许任何用户的访问";
    }

    @GetMapping("/hehe")
    public String hehe(){
        return "这个方法没有注解，使用类注解";
    }



}
